// @/utils/request.js
import uni from '@dcloudio/uni-app';

// 配置请求的基地址
const baseURL = 'https://your-api-base-url.com';

// 请求拦截器
const requestInterceptor = (config) => {
  // 在请求发送之前做一些处理，例如添加请求头
  const token = uni.getStorageSync('token');
  if (token) {
    config.header = {
      ...config.header,
      Authorization: `Bearer ${token}`
    };
  }
  return config;
};

// 响应拦截器
const responseInterceptor = (response) => {
  // 在响应返回之后做一些处理，例如处理错误码
  const { statusCode, data } = response;
  if (statusCode === 200) {
    return data;
  } else {
    uni.showToast({
      title: `请求失败，状态码：${statusCode}`,
      icon: 'none'
    });
    return Promise.reject(new Error(`请求失败，状态码：${statusCode}`));
  }
};

// 封装请求方法
const request = {
  get(url, data = {}) {
    const config = {
      url: baseURL + url,
      method: 'GET',
      data
    };
    const interceptedConfig = requestInterceptor(config);
    return uni.request(interceptedConfig).then(responseInterceptor);
  },
  post(url, data = {}) {
    const config = {
      url: baseURL + url,
      method: 'POST',
      data
    };
    const interceptedConfig = requestInterceptor(config);
    return uni.request(interceptedConfig).then(responseInterceptor);
  }
};

export { request };
